home *** CD-ROM | disk | FTP | other *** search
MacBinary | 1999-07-13 | 7.0 KB | [TEXT/CWIE] |
open in:
MacOS 8.1
|
Win98
|
DOS
browse contents |
view JSON data
|
view as text
This file was processed as: MacBinary
(archive/macBinary).
Confidence | Program | Detection | Match Type | Support
|
---|
10%
| dexvert
| MacBinary (archive/macBinary)
| fallback
| Supported |
1%
| dexvert
| Text File (text/txt)
| fallback
| Supported |
100%
| file
| MacBinary II, inited, Tue Jul 13 21:53:54 1999, modified Tue Jul 13 21:53:54 1999, creator 'CWIE', type ASCII, 6527 bytes "Hashtable.cpp" , at 0x19ff 410 bytes resource
| default (weak)
| |
99%
| file
| data
| default
| |
74%
| TrID
| Macintosh plain text (MacBinary)
| default
| |
25%
| TrID
| MacBinary 2
| default (weak)
| |
100%
| siegfried
| fmt/1762 MacBinary (II)
| default
| |
100%
| lsar
| MacBinary
| default
|
|
id metadata |
---|
key | value |
---|
macFileType | [TEXT] |
macFileCreator | [CWIE] |
hex view+--------+-------------------------+-------------------------+--------+--------+
|00000000| 00 0d 48 61 73 68 74 61 | 62 6c 65 2e 63 70 70 00 |..Hashta|ble.cpp.|
|00000010| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00000020| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00000030| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00000040| 00 54 45 58 54 43 57 49 | 45 01 00 00 00 00 00 00 |.TEXTCWI|E.......|
|00000050| 00 00 00 00 00 19 7f 00 | 00 01 9a b3 b1 9e 32 b3 |........|......2.|
|00000060| b1 9e 32 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |..2.....|........|
|00000070| 00 00 00 00 00 00 00 00 | 00 00 81 81 3e 83 00 00 |........|....>...|
|00000080| 0d 23 69 6e 63 6c 75 64 | 65 20 22 48 61 73 68 74 |.#includ|e "Hasht|
|00000090| 61 62 6c 65 2e 68 22 0d | 0d 23 69 6e 63 6c 75 64 |able.h".|.#includ|
|000000a0| 65 20 3c 73 74 64 6c 69 | 62 2e 68 3e 0d 0d 0d 0d |e <stdli|b.h>....|
|000000b0| 6c 6f 6e 67 20 48 61 73 | 68 74 61 62 6c 65 3a 3a |long Has|htable::|
|000000c0| 73 54 61 62 6c 65 53 69 | 7a 65 73 5b 20 4e 55 4d |sTableSi|zes[ NUM|
|000000d0| 5f 53 49 5a 45 53 20 5d | 20 3d 20 7b 20 32 33 2c |_SIZES ]| = { 23,|
|000000e0| 20 39 37 2c 20 33 39 37 | 2c 20 37 39 37 2c 20 33 | 97, 397|, 797, 3|
|000000f0| 32 30 33 2c 20 36 34 32 | 31 2c 20 31 32 38 35 33 |203, 642|1, 12853|
|00000100| 2c 20 35 31 34 33 37 2c | 20 32 30 35 37 35 39 2c |, 51437,| 205759,|
|00000110| 20 34 31 31 35 32 37 2c | 20 31 36 34 36 32 33 37 | 411527,| 1646237|
|00000120| 2c 20 33 32 39 32 34 38 | 39 2c 20 36 35 38 34 39 |, 329248|9, 65849|
|00000130| 38 33 2c 20 31 33 31 36 | 39 39 37 37 2c 20 35 32 |83, 1316|9977, 52|
|00000140| 36 37 39 39 36 39 20 7d | 3b 0d 0d 23 64 65 66 69 |679969 }|;..#defi|
|00000150| 6e 65 20 5f 4d 49 4e 28 | 20 61 2c 20 62 20 29 09 |ne _MIN(| a, b ).|
|00000160| 28 20 28 61 29 20 3e 20 | 28 62 29 20 3f 20 28 62 |( (a) > |(b) ? (b|
|00000170| 29 20 3a 20 28 61 29 20 | 29 0d 09 0d 0d 48 61 73 |) : (a) |)....Has|
|00000180| 68 74 61 62 6c 65 3a 3a | 48 61 73 68 74 61 62 6c |htable::|Hashtabl|
|00000190| 65 28 20 62 6f 6f 6c 20 | 69 6e 4b 65 79 73 4f 77 |e( bool |inKeysOw|
|000001a0| 6e 65 64 2c 20 69 6e 74 | 20 69 6e 4c 6f 61 64 46 |ned, int| inLoadF|
|000001b0| 61 63 74 6f 72 20 29 20 | 7b 0d 09 6d 4b 65 79 73 |actor ) |{..mKeys|
|000001c0| 4f 77 6e 65 64 09 09 3d | 20 69 6e 4b 65 79 73 4f |Owned..=| inKeysO|
|000001d0| 77 6e 65 64 3b 0d 09 6d | 54 61 62 6c 65 53 69 7a |wned;..m|TableSiz|
|000001e0| 65 09 09 3d 20 30 3b 0d | 09 6d 54 61 62 6c 65 09 |e..= 0;.|.mTable.|
|000001f0| 09 09 3d 20 4e 55 4c 4c | 3b 0d 09 6d 4e 75 6d 45 |..= NULL|;..mNumE|
|00000200| 6e 74 72 69 65 73 09 09 | 3d 20 30 3b 0d 09 6d 54 |ntries..|= 0;..mT|
|00000210| 68 72 65 73 68 6f 6c 64 | 09 09 3d 20 30 3b 0d 09 |hreshold|..= 0;..|
|00000220| 6d 4c 6f 61 64 46 61 63 | 74 6f 72 09 09 3d 20 69 |mLoadFac|tor..= i|
|00000230| 6e 4c 6f 61 64 46 61 63 | 74 6f 72 3b 0d 09 0d 09 |nLoadFac|tor;....|
|00000240| 2f 2f 20 44 6f 6e 27 74 | 20 6c 65 74 20 74 68 65 |// Don't| let the|
|00000250| 20 63 6c 69 65 6e 74 20 | 6b 69 6c 6c 20 68 69 6d | client |kill him|
|00000260| 73 65 6c 66 20 77 69 74 | 68 20 61 20 62 61 64 20 |self wit|h a bad |
|00000270| 6c 6f 61 64 20 66 61 63 | 74 6f 72 0d 09 69 66 20 |load fac|tor..if |
|00000280| 28 20 6d 4c 6f 61 64 46 | 61 63 74 6f 72 20 3e 20 |( mLoadF|actor > |
|00000290| 31 30 30 20 29 0d 09 09 | 6d 4c 6f 61 64 46 61 63 |100 )...|mLoadFac|
|000002a0| 74 6f 72 20 3d 20 31 30 | 30 3b 0d 09 65 6c 73 65 |tor = 10|0;..else|
|000002b0| 20 69 66 20 28 20 6d 4c | 6f 61 64 46 61 63 74 6f | if ( mL|oadFacto|
|000002c0| 72 20 3c 20 31 30 20 29 | 0d 09 09 6d 4c 6f 61 64 |r < 10 )|...mLoad|
|000002d0| 46 61 63 74 6f 72 20 3d | 20 31 30 3b 0d 09 09 0d |Factor =| 10;....|
|000002e0| 09 52 65 68 61 73 68 28 | 29 3b 0d 7d 0d 0d 0d 48 |.Rehash(|);.}...H|
|000002f0| 61 73 68 74 61 62 6c 65 | 3a 3a 7e 48 61 73 68 74 |ashtable|::~Hasht|
|00000300| 61 62 6c 65 28 29 20 7b | 0d 09 52 65 6d 6f 76 65 |able() {|..Remove|
|00000310| 41 6c 6c 28 29 3b 0d 09 | 0d 09 69 66 20 28 20 6d |All();..|..if ( m|
|00000320| 54 61 62 6c 65 20 29 0d | 09 09 64 65 6c 65 74 65 |Table ).|..delete|
|00000330| 20 5b 5d 6d 54 61 62 6c | 65 3b 0d 7d 0d 0d 09 0d | []mTabl|e;.}....|
|00000340| 76 6f 69 64 20 48 61 73 | 68 74 61 62 6c 65 3a 3a |void Has|htable::|
|00000350| 52 65 68 61 73 68 28 29 | 20 7b 0d 09 6c 6f 6e 67 |Rehash()| {..long|
|00000360| 09 09 69 2c 20 69 6e 64 | 65 78 2c 20 6f 6c 64 53 |..i, ind|ex, oldS|
|00000370| 69 7a 65 20 3d 20 6d 54 | 61 62 6c 65 53 69 7a 65 |ize = mT|ableSize|
|00000380| 3b 0d 09 4b 45 6e 74 72 | 79 2a 09 09 74 65 6d 70 |;..KEntr|y*..temp|
|00000390| 2c 20 2a 65 6e 74 72 79 | 3b 0d 09 4b 45 6e 74 72 |, *entry|;..KEntr|
|000003a0| 79 2a 2a 09 6f 6c 64 54 | 61 62 6c 65 20 3d 20 6d |y**.oldT|able = m|
|000003b0| 54 61 62 6c 65 3b 0d 09 | 0d 09 2f 2f 20 46 69 6e |Table;..|..// Fin|
|000003c0| 64 20 74 68 65 20 6e 65 | 78 74 20 62 69 67 67 65 |d the ne|xt bigge|
|000003d0| 72 20 74 61 62 6c 65 20 | 73 69 7a 65 0d 09 66 6f |r table |size..fo|
|000003e0| 72 20 28 20 69 20 3d 20 | 30 3b 20 6d 54 61 62 6c |r ( i = |0; mTabl|
|000003f0| 65 53 69 7a 65 20 3c 3d | 20 6f 6c 64 53 69 7a 65 |eSize <=| oldSize|
|00000400| 3b 20 69 2b 2b 20 29 0d | 09 09 6d 54 61 62 6c 65 |; i++ ).|..mTable|
|00000410| 53 69 7a 65 20 3d 20 73 | 54 61 62 6c 65 53 69 7a |Size = s|TableSiz|
|00000420| 65 73 5b 20 69 20 5d 3b | 0d 0d 09 0d 09 2f 2f 20 |es[ i ];|.....// |
|00000430| 41 6c 6c 6f 63 20 74 68 | 65 20 6e 65 77 20 74 61 |Alloc th|e new ta|
|00000440| 62 6c 65 20 61 6e 64 20 | 6d 61 6b 65 20 69 74 20 |ble and |make it |
|00000450| 65 6d 70 74 79 09 0d 09 | 6d 54 61 62 6c 65 20 3d |empty...|mTable =|
|00000460| 20 6e 65 77 20 4b 45 6e | 74 72 79 2a 5b 20 6d 54 | new KEn|try*[ mT|
|00000470| 61 62 6c 65 53 69 7a 65 | 20 5d 3b 0d 09 66 6f 72 |ableSize| ];..for|
|00000480| 20 28 20 69 20 3d 20 30 | 3b 20 69 20 3c 20 6d 54 | ( i = 0|; i < mT|
|00000490| 61 62 6c 65 53 69 7a 65 | 3b 20 69 2b 2b 20 29 0d |ableSize|; i++ ).|
|000004a0| 09 09 6d 54 61 62 6c 65 | 5b 20 69 20 5d 20 3d 20 |..mTable|[ i ] = |
|000004b0| 4e 55 4c 4c 3b 0d 09 0d | 09 2f 2f 20 52 65 68 61 |NULL;...|.// Reha|
|000004c0| 73 68 20 61 6c 6c 20 74 | 68 65 20 6f 6c 64 20 76 |sh all t|he old v|
|000004d0| 61 6c 75 65 73 20 69 6e | 74 6f 20 74 68 65 20 6e |alues in|to the n|
|000004e0| 65 77 20 74 61 62 6c 65 | 0d 09 66 6f 72 20 28 20 |ew table|..for ( |
|000004f0| 69 20 3d 20 30 3b 20 69 | 20 3c 20 6f 6c 64 53 69 |i = 0; i| < oldSi|
|00000500| 7a 65 3b 20 69 2b 2b 20 | 29 20 7b 0d 09 09 66 6f |ze; i++ |) {...fo|
|00000510| 72 20 28 20 65 6e 74 72 | 79 20 3d 20 6f 6c 64 54 |r ( entr|y = oldT|
|00000520| 61 62 6c 65 5b 20 69 20 | 5d 3b 20 65 6e 74 72 79 |able[ i |]; entry|
|00000530| 3b 20 29 20 7b 0d 09 09 | 09 69 6e 64 65 78 20 3d |; ) {...|.index =|
|00000540| 20 65 6e 74 72 79 20 2d | 3e 20 6d 4b 65 79 20 25 | entry -|> mKey %|
|00000550| 20 6d 54 61 62 6c 65 53 | 69 7a 65 3b 0d 09 09 09 | mTableS|ize;....|
|00000560| 74 65 6d 70 20 3d 20 65 | 6e 74 72 79 20 2d 3e 20 |temp = e|ntry -> |
|00000570| 6d 4e 65 78 74 3b 0d 09 | 09 09 65 6e 74 72 79 20 |mNext;..|..entry |
|00000580| 2d 3e 20 6d 4e 65 78 74 | 20 3d 20 6d 54 61 62 6c |-> mNext| = mTabl|
|00000590| 65 5b 20 69 6e 64 65 78 | 20 5d 3b 0d 09 09 09 6d |e[ index| ];....m|
|000005a0| 54 61 62 6c 65 5b 20 69 | 6e 64 65 78 20 5d 09 3d |Table[ i|ndex ].=|
|000005b0| 20 65 6e 74 72 79 3b 0d | 09 09 09 65 6e 74 72 79 | entry;.|...entry|
|000005c0| 20 3d 20 74 65 6d 70 3b | 0d 09 09 7d 09 0d 09 7d | = temp;|...}...}|
|000005d0| 0d 0d 09 2f 2f 20 53 65 | 74 20 74 68 65 20 6e 65 |...// Se|t the ne|
|000005e0| 77 20 73 69 7a 65 20 74 | 68 65 74 20 77 65 27 6c |w size t|het we'l|
|000005f0| 6c 20 72 65 68 61 73 68 | 20 61 74 0d 09 6d 54 68 |l rehash| at..mTh|
|00000600| 72 65 73 68 6f 6c 64 20 | 3d 20 6d 4c 6f 61 64 46 |reshold |= mLoadF|
|00000610| 61 63 74 6f 72 20 2a 20 | 6d 54 61 62 6c 65 53 69 |actor * |mTableSi|
|00000620| 7a 65 20 2f 20 31 30 30 | 3b 0d 09 0d 09 2f 2f 20 |ze / 100|;....// |
|00000630| 57 65 20 64 6f 6e 27 74 | 20 6e 65 65 64 20 74 68 |We don't| need th|
|00000640| 65 20 6f 6c 64 20 74 61 | 62 6c 65 20 61 6e 79 6d |e old ta|ble anym|
|00000650| 6f 72 65 0d 09 69 66 20 | 28 20 6f 6c 64 54 61 62 |ore..if |( oldTab|
|00000660| 6c 65 20 29 0d 09 09 64 | 65 6c 65 74 65 20 5b 5d |le )...d|elete []|
|00000670| 6f 6c 64 54 61 62 6c 65 | 3b 0d 7d 0d 0d 0d 0d 0d |oldTable|;.}.....|
|00000680| 0d 76 6f 69 64 2a 20 48 | 61 73 68 74 61 62 6c 65 |.void* H|ashtable|
|00000690| 3a 3a 70 75 74 28 20 6c | 6f 6e 67 20 69 6e 4b 65 |::put( l|ong inKe|
|000006a0| 79 2c 20 63 6f 6e 73 74 | 20 48 61 73 68 61 62 6c |y, const| Hashabl|
|000006b0| 65 2a 20 69 6e 48 4b 65 | 79 2c 20 76 6f 69 64 2a |e* inHKe|y, void*|
|000006c0| 20 69 6e 56 61 6c 75 65 | 20 29 20 7b 0d 09 6c 6f | inValue| ) {..lo|
|000006d0| 6e 67 09 09 69 6e 64 65 | 78 3b 0d 09 4b 45 6e 74 |ng..inde|x;..KEnt|
|000006e0| 72 79 2a 09 09 65 6e 74 | 72 79 3b 0d 09 76 6f 69 |ry*..ent|ry;..voi|
|000006f0| 64 2a 09 09 6f 6c 64 56 | 61 6c 3b 0d 0d 09 2f 2f |d*..oldV|al;...//|
|00000700| 20 53 65 65 20 69 66 20 | 77 65 20 6e 65 65 64 20 | See if |we need |
|00000710| 74 6f 20 6d 61 6b 65 20 | 74 68 65 20 68 61 73 68 |to make |the hash|
|00000720| 20 74 61 62 6c 65 20 62 | 69 67 67 65 72 0d 09 69 | table b|igger..i|
|00000730| 66 20 28 20 6d 4e 75 6d | 45 6e 74 72 69 65 73 20 |f ( mNum|Entries |
|00000740| 3e 3d 20 6d 54 68 72 65 | 73 68 6f 6c 64 20 29 0d |>= mThre|shold ).|
|00000750| 09 09 52 65 68 61 73 68 | 28 29 3b 0d 09 0d 09 2f |..Rehash|();..../|
|00000760| 2f 20 49 66 20 77 65 20 | 61 6c 72 65 61 64 79 20 |/ If we |already |
|00000770| 68 61 76 65 20 74 68 65 | 20 6b 65 79 2c 20 72 65 |have the| key, re|
|00000780| 70 6c 61 63 65 20 74 68 | 65 20 76 61 6c 75 65 20 |place th|e value |
|00000790| 61 6e 64 20 70 61 73 73 | 20 74 68 65 20 6f 6c 64 |and pass| the old|
|000007a0| 20 6f 6e 65 20 62 61 63 | 6b 0d 09 65 6e 74 72 79 | one bac|k..entry|
|000007b0| 20 3d 20 66 65 74 63 68 | 45 6e 74 72 79 28 20 69 | = fetch|Entry( i|
|000007c0| 6e 4b 65 79 2c 20 69 6e | 48 4b 65 79 20 29 3b 0d |nKey, in|HKey );.|
|000007d0| 09 69 66 20 28 20 65 6e | 74 72 79 20 29 20 7b 0d |.if ( en|try ) {.|
|000007e0| 09 09 6f 6c 64 56 61 6c | 09 09 09 3d 20 65 6e 74 |..oldVal|...= ent|
|000007f0| 72 79 20 2d 3e 20 6d 56 | 61 6c 75 65 3b 0d 09 09 |ry -> mV|alue;...|
|00000800| 69 66 20 28 20 6d 4b 65 | 79 73 4f 77 6e 65 64 20 |if ( mKe|ysOwned |
|00000810| 26 26 20 69 6e 48 4b 65 | 79 20 29 0d 09 09 09 64 |&& inHKe|y )....d|
|00000820| 65 6c 65 74 65 20 69 6e | 48 4b 65 79 3b 20 7d 0d |elete in|HKey; }.|
|00000830| 09 65 6c 73 65 20 7b 20 | 0d 09 09 6f 6c 64 56 61 |.else { |...oldVa|
|00000840| 6c 09 09 09 09 3d 20 4e | 55 4c 4c 3b 0d 09 09 69 |l....= N|ULL;...i|
|00000850| 6e 64 65 78 09 09 09 09 | 3d 20 28 28 75 6e 73 69 |ndex....|= ((unsi|
|00000860| 67 6e 65 64 20 6c 6f 6e | 67 29 20 69 6e 4b 65 79 |gned lon|g) inKey|
|00000870| 29 20 25 20 6d 54 61 62 | 6c 65 53 69 7a 65 3b 0d |) % mTab|leSize;.|
|00000880| 09 09 65 6e 74 72 79 09 | 09 09 09 3d 20 6e 65 77 |..entry.|...= new|
|00000890| 20 4b 45 6e 74 72 79 3b | 0d 09 09 65 6e 74 72 79 | KEntry;|...entry|
|000008a0| 20 2d 3e 20 6d 48 61 73 | 68 61 62 6c 65 09 3d 20 | -> mHas|hable.= |
|000008b0| 69 6e 48 4b 65 79 3b 0d | 09 09 65 6e 74 72 79 20 |inHKey;.|..entry |
|000008c0| 2d 3e 20 6d 4b 65 79 09 | 09 3d 20 28 28 75 6e 73 |-> mKey.|.= ((uns|
|000008d0| 69 67 6e 65 64 20 6c 6f | 6e 67 29 20 69 6e 4b 65 |igned lo|ng) inKe|
|000008e0| 79 29 3b 0d 09 09 65 6e | 74 72 79 20 2d 3e 20 6d |y);...en|try -> m|
|000008f0| 4e 65 78 74 09 09 3d 20 | 6d 54 61 62 6c 65 5b 20 |Next..= |mTable[ |
|00000900| 69 6e 64 65 78 20 5d 3b | 0d 09 09 6d 54 61 62 6c |index ];|...mTabl|
|00000910| 65 5b 20 69 6e 64 65 78 | 20 5d 09 09 3d 20 65 6e |e[ index| ]..= en|
|00000920| 74 72 79 3b 0d 09 09 6d | 4e 75 6d 45 6e 74 72 69 |try;...m|NumEntri|
|00000930| 65 73 2b 2b 3b 0d 09 7d | 0d 09 0d 09 65 6e 74 72 |es++;..}|....entr|
|00000940| 79 20 2d 3e 20 6d 56 61 | 6c 75 65 09 09 3d 20 69 |y -> mVa|lue..= i|
|00000950| 6e 56 61 6c 75 65 3b 0d | 09 0d 09 72 65 74 75 72 |nValue;.|...retur|
|00000960| 6e 20 6f 6c 64 56 61 6c | 3b 0d 7d 0d 0d 0d 0d 62 |n oldVal|;.}....b|
|00000970| 6f 6f 6c 20 48 61 73 68 | 74 61 62 6c 65 3a 3a 47 |ool Hash|table::G|
|00000980| 65 74 28 20 6c 6f 6e 67 | 20 69 6e 4b 65 79 2c 20 |et( long| inKey, |
|00000990| 76 6f 69 64 2a 2a 20 6f | 75 74 56 61 6c 75 65 20 |void** o|utValue |
|000009a0| 29 20 63 6f 6e 73 74 20 | 7b 0d 09 4b 45 6e 74 72 |) const |{..KEntr|
|000009b0| 79 2a 09 65 6e 74 72 79 | 20 3d 20 66 65 74 63 68 |y*.entry| = fetch|
|000009c0| 45 6e 74 72 79 28 20 69 | 6e 4b 65 79 2c 20 4e 55 |Entry( i|nKey, NU|
|000009d0| 4c 4c 20 29 3b 0d 0d 09 | 69 66 20 28 20 65 6e 74 |LL );...|if ( ent|
|000009e0| 72 79 20 26 26 20 6f 75 | 74 56 61 6c 75 65 20 29 |ry && ou|tValue )|
|000009f0| 20 0d 09 09 2a 6f 75 74 | 56 61 6c 75 65 20 3d 20 | ...*out|Value = |
|00000a00| 65 6e 74 72 79 20 2d 3e | 20 6d 56 61 6c 75 65 3b |entry ->| mValue;|
|00000a10| 0d 0d 09 72 65 74 75 72 | 6e 20 65 6e 74 72 79 20 |...retur|n entry |
|00000a20| 21 3d 20 4e 55 4c 4c 3b | 0d 7d 0d 0d 0d 62 6f 6f |!= NULL;|.}...boo|
|00000a30| 6c 20 48 61 73 68 74 61 | 62 6c 65 3a 3a 47 65 74 |l Hashta|ble::Get|
|00000a40| 28 20 63 6f 6e 73 74 20 | 48 61 73 68 61 62 6c 65 |( const |Hashable|
|00000a50| 2a 20 69 6e 4b 65 79 2c | 20 76 6f 69 64 2a 2a 20 |* inKey,| void** |
|00000a60| 6f 75 74 56 61 6c 75 65 | 20 29 20 63 6f 6e 73 74 |outValue| ) const|
|00000a70| 20 7b 0d 09 4b 45 6e 74 | 72 79 2a 09 65 6e 74 72 | {..KEnt|ry*.entr|
|00000a80| 79 20 3d 20 66 65 74 63 | 68 45 6e 74 72 79 28 20 |y = fetc|hEntry( |
|00000a90| 69 6e 4b 65 79 20 2d 3e | 20 48 61 73 68 28 29 2c |inKey ->| Hash(),|
|00000aa0| 20 69 6e 4b 65 79 20 29 | 3b 0d 0d 09 69 66 20 28 | inKey )|;...if (|
|00000ab0| 20 65 6e 74 72 79 20 26 | 26 20 6f 75 74 56 61 6c | entry &|& outVal|
|00000ac0| 75 65 20 29 20 0d 09 09 | 2a 6f 75 74 56 61 6c 75 |ue ) ...|*outValu|
|00000ad0| 65 20 3d 20 65 6e 74 72 | 79 20 2d 3e 20 6d 56 61 |e = entr|y -> mVa|
|00000ae0| 6c 75 65 3b 0d 0d 09 72 | 65 74 75 72 6e 20 65 6e |lue;...r|eturn en|
|00000af0| 74 72 79 20 21 3d 20 4e | 55 4c 4c 3b 0d 7d 0d 0d |try != N|ULL;.}..|
|00000b00| 0d 0d 76 6f 69 64 20 48 | 61 73 68 74 61 62 6c 65 |..void H|ashtable|
|00000b10| 3a 3a 47 65 74 56 61 6c | 75 65 73 28 20 58 50 74 |::GetVal|ues( XPt|
|00000b20| 72 4c 69 73 74 26 20 6f | 75 74 56 61 6c 75 65 73 |rList& o|utValues|
|00000b30| 20 29 20 7b 0d 09 4b 45 | 6e 74 72 79 2a 2a 20 65 | ) {..KE|ntry** e|
|00000b40| 6e 74 72 79 50 20 3d 20 | 6d 54 61 62 6c 65 2c 20 |ntryP = |mTable, |
|00000b50| 2a 65 6e 74 72 79 3b 0d | 09 69 6e 74 20 69 3b 0d |*entry;.|.int i;.|
|00000b60| 09 0d 09 6f 75 74 56 61 | 6c 75 65 73 2e 52 65 6d |...outVa|lues.Rem|
|00000b70| 6f 76 65 41 6c 6c 28 29 | 3b 0d 09 6f 75 74 56 61 |oveAll()|;..outVa|
|00000b80| 6c 75 65 73 2e 44 69 6d | 28 20 34 20 29 3b 0d 09 |lues.Dim|( 4 );..|
|00000b90| 0d 09 66 6f 72 20 28 20 | 69 20 3d 20 30 3b 20 69 |..for ( |i = 0; i|
|00000ba0| 20 3c 20 6d 54 61 62 6c | 65 53 69 7a 65 3b 20 69 | < mTabl|eSize; i|
|00000bb0| 2b 2b 20 29 20 7b 0d 09 | 09 65 6e 74 72 79 20 3d |++ ) {..|.entry =|
|00000bc0| 20 2a 65 6e 74 72 79 50 | 3b 0d 09 09 77 68 69 6c | *entryP|;...whil|
|00000bd0| 65 20 28 20 65 6e 74 72 | 79 20 29 20 7b 0d 09 09 |e ( entr|y ) {...|
|00000be0| 09 6f 75 74 56 61 6c 75 | 65 73 2e 41 64 64 28 20 |.outValu|es.Add( |
|00000bf0| 65 6e 74 72 79 20 2d 3e | 20 6d 56 61 6c 75 65 20 |entry ->| mValue |
|00000c00| 29 3b 0d 09 09 09 65 6e | 74 72 79 20 3d 20 65 6e |);....en|try = en|
|00000c10| 74 72 79 20 2d 3e 20 6d | 4e 65 78 74 3b 0d 09 09 |try -> m|Next;...|
|00000c20| 7d 0d 0d 09 09 65 6e 74 | 72 79 50 2b 2b 3b 0d 09 |}....ent|ryP++;..|
|00000c30| 7d 0d 7d 0d 0d 0d 76 6f | 69 64 20 48 61 73 68 74 |}.}...vo|id Hasht|
|00000c40| 61 62 6c 65 3a 3a 47 65 | 74 4b 65 79 73 28 20 58 |able::Ge|tKeys( X|
|00000c50| 50 74 72 4c 69 73 74 26 | 20 6f 75 74 4b 65 79 73 |PtrList&| outKeys|
|00000c60| 20 29 20 7b 0d 09 4b 45 | 6e 74 72 79 2a 2a 20 65 | ) {..KE|ntry** e|
|00000c70| 6e 74 72 79 50 20 3d 20 | 6d 54 61 62 6c 65 2c 20 |ntryP = |mTable, |
|00000c80| 2a 65 6e 74 72 79 3b 0d | 09 69 6e 74 20 69 3b 0d |*entry;.|.int i;.|
|00000c90| 09 0d 09 6f 75 74 4b 65 | 79 73 2e 52 65 6d 6f 76 |...outKe|ys.Remov|
|00000ca0| 65 41 6c 6c 28 29 3b 0d | 09 6f 75 74 4b 65 79 73 |eAll();.|.outKeys|
|00000cb0| 2e 44 69 6d 28 20 34 20 | 2a 20 4e 75 6d 45 6e 74 |.Dim( 4 |* NumEnt|
|00000cc0| 72 69 65 73 28 29 20 29 | 3b 0d 09 0d 09 66 6f 72 |ries() )|;....for|
|00000cd0| 20 28 20 69 20 3d 20 30 | 3b 20 69 20 3c 20 6d 54 | ( i = 0|; i < mT|
|00000ce0| 61 62 6c 65 53 69 7a 65 | 3b 20 69 2b 2b 20 29 20 |ableSize|; i++ ) |
|00000cf0| 7b 0d 09 09 65 6e 74 72 | 79 20 3d 20 2a 65 6e 74 |{...entr|y = *ent|
|00000d00| 72 79 50 3b 0d 09 09 77 | 68 69 6c 65 20 28 20 65 |ryP;...w|hile ( e|
|00000d10| 6e 74 72 79 20 29 20 7b | 0d 09 09 09 6f 75 74 4b |ntry ) {|....outK|
|00000d20| 65 79 73 2e 41 64 64 28 | 20 28 20 65 6e 74 72 79 |eys.Add(| ( entry|
|00000d30| 20 2d 3e 20 6d 48 61 73 | 68 61 62 6c 65 20 29 20 | -> mHas|hable ) |
|00000d40| 3f 20 65 6e 74 72 79 20 | 2d 3e 20 6d 48 61 73 68 |? entry |-> mHash|
|00000d50| 61 62 6c 65 20 3a 20 28 | 76 6f 69 64 2a 29 20 65 |able : (|void*) e|
|00000d60| 6e 74 72 79 20 2d 3e 20 | 6d 4b 65 79 20 29 3b 0d |ntry -> |mKey );.|
|00000d70| 09 09 09 65 6e 74 72 79 | 20 3d 20 65 6e 74 72 79 |...entry| = entry|
|00000d80| 20 2d 3e 20 6d 4e 65 78 | 74 3b 0d 09 09 7d 0d 0d | -> mNex|t;...}..|
|00000d90| 09 09 65 6e 74 72 79 50 | 2b 2b 3b 0d 09 7d 0d 7d |..entryP|++;..}.}|
|00000da0| 0d 0d 0d 0d 0d 4b 45 6e | 74 72 79 2a 09 48 61 73 |.....KEn|try*.Has|
|00000db0| 68 74 61 62 6c 65 3a 3a | 66 65 74 63 68 45 6e 74 |htable::|fetchEnt|
|00000dc0| 72 79 28 20 6c 6f 6e 67 | 20 69 6e 4b 65 79 2c 20 |ry( long| inKey, |
|00000dd0| 63 6f 6e 73 74 20 48 61 | 73 68 61 62 6c 65 2a 20 |const Ha|shable* |
|00000de0| 69 6e 48 4b 65 79 20 29 | 20 63 6f 6e 73 74 20 7b |inHKey )| const {|
|00000df0| 0d 09 6c 6f 6e 67 09 09 | 69 6e 64 65 78 20 3d 20 |..long..|index = |
|00000e00| 28 20 28 75 6e 73 69 67 | 6e 65 64 20 6c 6f 6e 67 |( (unsig|ned long|
|00000e10| 29 20 69 6e 4b 65 79 20 | 29 20 25 20 6d 54 61 62 |) inKey |) % mTab|
|00000e20| 6c 65 53 69 7a 65 3b 0d | 09 4b 45 6e 74 72 79 2a |leSize;.|.KEntry*|
|00000e30| 09 09 65 6e 74 72 79 20 | 3d 20 6d 54 61 62 6c 65 |..entry |= mTable|
|00000e40| 5b 20 69 6e 64 65 78 20 | 5d 3b 0d 0d 09 2f 2f 20 |[ index |];...// |
|00000e50| 4c 6f 6f 6b 20 74 68 72 | 75 20 74 68 65 20 63 68 |Look thr|u the ch|
|00000e60| 61 69 6e 20 66 6f 72 20 | 74 68 65 20 6b 65 79 20 |ain for |the key |
|00000e70| 61 6e 64 20 74 68 65 20 | 65 6e 74 72 79 20 68 6f |and the |entry ho|
|00000e80| 6c 64 69 6e 67 20 74 68 | 61 74 20 6b 65 79 2d 76 |lding th|at key-v|
|00000e90| 61 6c 75 65 20 70 61 69 | 72 0d 09 77 68 69 6c 65 |alue pai|r..while|
|00000ea0| 20 28 20 65 6e 74 72 79 | 20 29 20 7b 0d 09 09 69 | ( entry| ) {...i|
|00000eb0| 66 20 28 20 65 6e 74 72 | 79 20 2d 3e 20 6d 4b 65 |f ( entr|y -> mKe|
|00000ec0| 79 20 3d 3d 20 69 6e 4b | 65 79 20 29 20 7b 0d 09 |y == inK|ey ) {..|
|00000ed0| 09 09 69 66 20 28 20 21 | 20 65 6e 74 72 79 20 2d |..if ( !| entry -|
|00000ee0| 3e 20 6d 48 61 73 68 61 | 62 6c 65 20 7c 7c 20 21 |> mHasha|ble || !|
|00000ef0| 20 69 6e 48 4b 65 79 20 | 29 0d 09 09 09 09 72 65 | inHKey |).....re|
|00000f00| 74 75 72 6e 20 65 6e 74 | 72 79 3b 0d 09 09 09 65 |turn ent|ry;....e|
|00000f10| 6c 73 65 20 69 66 20 28 | 20 69 6e 48 4b 65 79 20 |lse if (| inHKey |
|00000f20| 2d 3e 20 45 71 75 61 6c | 73 28 20 65 6e 74 72 79 |-> Equal|s( entry|
|00000f30| 20 2d 3e 20 6d 48 61 73 | 68 61 62 6c 65 20 29 20 | -> mHas|hable ) |
|00000f40| 29 0d 09 09 09 09 72 65 | 74 75 72 6e 20 65 6e 74 |).....re|turn ent|
|00000f50| 72 79 3b 0d 09 09 7d 0d | 09 09 65 6e 74 72 79 20 |ry;...}.|..entry |
|00000f60| 3d 20 65 6e 74 72 79 20 | 2d 3e 20 6d 4e 65 78 74 |= entry |-> mNext|
|00000f70| 3b 0d 09 7d 0d 09 0d 09 | 72 65 74 75 72 6e 20 4e |;..}....|return N|
|00000f80| 55 4c 4c 3b 0d 7d 0d 0d | 0d 0d 0d 0d 0d 76 6f 69 |ULL;.}..|.....voi|
|00000f90| 64 20 48 61 73 68 74 61 | 62 6c 65 3a 3a 52 65 6d |d Hashta|ble::Rem|
|00000fa0| 6f 76 65 41 6c 6c 28 29 | 20 7b 0d 09 6c 6f 6e 67 |oveAll()| {..long|
|00000fb0| 20 69 3b 0d 09 4b 45 6e | 74 72 79 2a 09 65 6e 74 | i;..KEn|try*.ent|
|00000fc0| 72 79 2c 20 2a 74 65 6d | 70 3b 0d 09 0d 09 2f 2f |ry, *tem|p;....//|
|00000fd0| 20 53 74 65 70 20 74 68 | 65 75 20 74 68 65 20 64 | Step th|eu the d|
|00000fe0| 69 63 74 20 74 61 62 6c | 65 20 61 6e 64 20 64 65 |ict tabl|e and de|
|00000ff0| 6c 65 74 65 20 61 6c 6c | 20 74 68 65 20 4b 45 6e |lete all| the KEn|
|00001000| 74 72 69 65 73 0d 09 66 | 6f 72 20 28 20 69 20 3d |tries..f|or ( i =|
|00001010| 20 30 3b 20 69 20 3c 20 | 6d 54 61 62 6c 65 53 69 | 0; i < |mTableSi|
|00001020| 7a 65 3b 20 69 2b 2b 20 | 29 20 7b 0d 09 09 66 6f |ze; i++ |) {...fo|
|00001030| 72 20 28 20 65 6e 74 72 | 79 20 3d 20 6d 54 61 62 |r ( entr|y = mTab|
|00001040| 6c 65 5b 20 69 20 5d 3b | 20 65 6e 74 72 79 3b 20 |le[ i ];| entry; |
|00001050| 29 20 7b 0d 09 09 09 69 | 66 20 28 20 6d 4b 65 79 |) {....i|f ( mKey|
|00001060| 73 4f 77 6e 65 64 20 26 | 26 20 65 6e 74 72 79 20 |sOwned &|& entry |
|00001070| 2d 3e 20 6d 48 61 73 68 | 61 62 6c 65 20 29 0d 09 |-> mHash|able )..|
|00001080| 09 09 09 64 65 6c 65 74 | 65 20 65 6e 74 72 79 20 |...delet|e entry |
|00001090| 2d 3e 20 6d 48 61 73 68 | 61 62 6c 65 3b 0d 09 09 |-> mHash|able;...|
|000010a0| 09 74 65 6d 70 20 3d 20 | 65 6e 74 72 79 20 2d 3e |.temp = |entry ->|
|000010b0| 20 6d 4e 65 78 74 3b 0d | 09 09 09 64 65 6c 65 74 | mNext;.|...delet|
|000010c0| 65 20 65 6e 74 72 79 3b | 0d 09 09 09 65 6e 74 72 |e entry;|....entr|
|000010d0| 79 20 3d 20 74 65 6d 70 | 3b 0d 09 09 7d 0d 09 09 |y = temp|;...}...|
|000010e0| 6d 54 61 62 6c 65 5b 20 | 69 20 5d 20 3d 20 4e 55 |mTable[ |i ] = NU|
|000010f0| 4c 4c 3b 0d 09 7d 0d 09 | 6d 4e 75 6d 45 6e 74 72 |LL;..}..|mNumEntr|
|00001100| 69 65 73 20 3d 20 30 3b | 0d 7d 0d 0d 0d 0d 76 6f |ies = 0;|.}....vo|
|00001110| 69 64 2a 20 48 61 73 68 | 74 61 62 6c 65 3a 3a 72 |id* Hash|table::r|
|00001120| 65 6d 6f 76 65 28 20 6c | 6f 6e 67 20 69 6e 4b 65 |emove( l|ong inKe|
|00001130| 79 2c 20 63 6f 6e 73 74 | 20 48 61 73 68 61 62 6c |y, const| Hashabl|
|00001140| 65 2a 20 69 6e 48 4b 65 | 79 20 29 20 7b 0d 09 6c |e* inHKe|y ) {..l|
|00001150| 6f 6e 67 09 09 69 6e 64 | 65 78 20 3d 20 28 20 28 |ong..ind|ex = ( (|
|00001160| 75 6e 73 69 67 6e 65 64 | 20 6c 6f 6e 67 29 20 69 |unsigned| long) i|
|00001170| 6e 4b 65 79 20 29 20 25 | 20 6d 54 61 62 6c 65 53 |nKey ) %| mTableS|
|00001180| 69 7a 65 3b 0d 09 4b 45 | 6e 74 72 79 2a 09 09 65 |ize;..KE|ntry*..e|
|00001190| 6e 74 72 79 20 3d 20 6d | 54 61 62 6c 65 5b 20 69 |ntry = m|Table[ i|
|000011a0| 6e 64 65 78 20 5d 2c 20 | 2a 70 72 65 76 20 3d 20 |ndex ], |*prev = |
|000011b0| 4e 55 4c 4c 3b 0d 09 62 | 6f 6f 6c 09 09 69 73 45 |NULL;..b|ool..isE|
|000011c0| 71 75 61 6c 3b 0d 09 76 | 6f 69 64 2a 09 09 72 65 |qual;..v|oid*..re|
|000011d0| 74 56 61 6c 3b 0d 0d 09 | 2f 2f 20 4c 6f 6f 6b 20 |tVal;...|// Look |
|000011e0| 74 68 72 75 20 74 68 65 | 20 63 68 61 69 6e 20 66 |thru the| chain f|
|000011f0| 6f 72 20 61 20 6d 61 74 | 63 68 69 6e 67 20 6b 65 |or a mat|ching ke|
|00001200| 79 20 61 6e 64 20 64 65 | 6c 65 74 65 20 69 74 0d |y and de|lete it.|
|00001210| 09 77 68 69 6c 65 20 28 | 20 65 6e 74 72 79 20 29 |.while (| entry )|
|00001220| 20 7b 0d 09 09 69 66 20 | 28 20 65 6e 74 72 79 20 | {...if |( entry |
|00001230| 2d 3e 20 6d 4b 65 79 20 | 3d 3d 20 69 6e 4b 65 79 |-> mKey |== inKey|
|00001240| 20 29 20 7b 0d 09 09 09 | 69 66 20 28 20 69 6e 48 | ) {....|if ( inH|
|00001250| 4b 65 79 20 26 26 20 65 | 6e 74 72 79 20 2d 3e 20 |Key && e|ntry -> |
|00001260| 6d 48 61 73 68 61 62 6c | 65 20 29 0d 09 09 09 09 |mHashabl|e ).....|
|00001270| 69 73 45 71 75 61 6c 20 | 3d 20 69 6e 48 4b 65 79 |isEqual |= inHKey|
|00001280| 20 2d 3e 20 45 71 75 61 | 6c 73 28 20 65 6e 74 72 | -> Equa|ls( entr|
|00001290| 79 20 2d 3e 20 6d 48 61 | 73 68 61 62 6c 65 20 29 |y -> mHa|shable )|
|000012a0| 3b 0d 09 09 09 65 6c 73 | 65 0d 09 09 09 09 69 73 |;....els|e.....is|
|000012b0| 45 71 75 61 6c 20 3d 20 | 74 72 75 65 3b 0d 09 09 |Equal = |true;...|
|000012c0| 09 09 0d 09 09 09 69 66 | 20 28 20 69 73 45 71 75 |......if| ( isEqu|
|000012d0| 61 6c 20 29 20 7b 0d 09 | 09 09 09 69 66 20 28 20 |al ) {..|...if ( |
|000012e0| 6d 4b 65 79 73 4f 77 6e | 65 64 20 26 26 20 65 6e |mKeysOwn|ed && en|
|000012f0| 74 72 79 20 2d 3e 20 6d | 48 61 73 68 61 62 6c 65 |try -> m|Hashable|
|00001300| 20 29 0d 09 09 09 09 09 | 64 65 6c 65 74 65 20 65 | )......|delete e|
|00001310| 6e 74 72 79 20 2d 3e 20 | 6d 48 61 73 68 61 62 6c |ntry -> |mHashabl|
|00001320| 65 3b 0d 0d 09 09 09 09 | 69 66 20 28 20 70 72 65 |e;......|if ( pre|
|00001330| 76 20 3d 3d 20 4e 55 4c | 4c 20 29 20 0d 09 09 09 |v == NUL|L ) ....|
|00001340| 09 09 6d 54 61 62 6c 65 | 5b 20 69 6e 64 65 78 20 |..mTable|[ index |
|00001350| 5d 20 3d 20 4e 55 4c 4c | 3b 0d 09 09 09 09 65 6c |] = NULL|;.....el|
|00001360| 73 65 20 0d 09 09 09 09 | 09 70 72 65 76 20 2d 3e |se .....|.prev ->|
|00001370| 20 6d 4e 65 78 74 20 3d | 20 65 6e 74 72 79 20 2d | mNext =| entry -|
|00001380| 3e 20 6d 4e 65 78 74 3b | 0d 09 09 09 09 72 65 74 |> mNext;|.....ret|
|00001390| 56 61 6c 20 3d 20 65 6e | 74 72 79 20 2d 3e 20 6d |Val = en|try -> m|
|000013a0| 56 61 6c 75 65 3b 0d 09 | 09 09 09 64 65 6c 65 74 |Value;..|...delet|
|000013b0| 65 20 65 6e 74 72 79 3b | 0d 09 09 09 09 6d 4e 75 |e entry;|.....mNu|
|000013c0| 6d 45 6e 74 72 69 65 73 | 2d 2d 3b 0d 09 09 09 09 |mEntries|--;.....|
|000013d0| 72 65 74 75 72 6e 20 72 | 65 74 56 61 6c 3b 0d 09 |return r|etVal;..|
|000013e0| 09 09 7d 0d 09 09 7d 0d | 09 09 70 72 65 76 20 3d |..}...}.|..prev =|
|000013f0| 20 65 6e 74 72 79 3b 0d | 09 09 65 6e 74 72 79 20 | entry;.|..entry |
|00001400| 3d 20 65 6e 74 72 79 20 | 2d 3e 20 6d 4e 65 78 74 |= entry |-> mNext|
|00001410| 3b 0d 09 7d 0d 09 0d 09 | 72 65 74 75 72 6e 20 4e |;..}....|return N|
|00001420| 55 4c 4c 3b 0d 7d 0d 0d | 0d 0d 6c 6f 6e 67 26 20 |ULL;.}..|..long& |
|00001430| 48 61 73 68 74 61 62 6c | 65 3a 3a 6f 70 65 72 61 |Hashtabl|e::opera|
|00001440| 74 6f 72 5b 5d 20 28 20 | 63 6f 6e 73 74 20 6c 6f |tor[] ( |const lo|
|00001450| 6e 67 20 69 6e 4b 65 79 | 20 29 20 7b 0d 09 4b 45 |ng inKey| ) {..KE|
|00001460| 6e 74 72 79 2a 09 65 6e | 74 72 79 20 3d 20 66 65 |ntry*.en|try = fe|
|00001470| 74 63 68 45 6e 74 72 79 | 28 20 69 6e 4b 65 79 2c |tchEntry|( inKey,|
|00001480| 20 4e 55 4c 4c 20 29 3b | 0d 09 0d 09 69 66 20 28 | NULL );|....if (|
|00001490| 20 21 20 65 6e 74 72 79 | 20 29 20 7b 0d 09 09 50 | ! entry| ) {...P|
|000014a0| 75 74 28 20 69 6e 4b 65 | 79 2c 20 30 20 29 3b 0d |ut( inKe|y, 0 );.|
|000014b0| 09 09 65 6e 74 72 79 20 | 3d 20 66 65 74 63 68 45 |..entry |= fetchE|
|000014c0| 6e 74 72 79 28 20 69 6e | 4b 65 79 2c 20 4e 55 4c |ntry( in|Key, NUL|
|000014d0| 4c 20 29 3b 0d 09 7d 0d | 09 0d 09 72 65 74 75 72 |L );..}.|...retur|
|000014e0| 6e 20 28 6c 6f 6e 67 26 | 29 20 65 6e 74 72 79 20 |n (long&|) entry |
|000014f0| 2d 3e 20 6d 56 61 6c 75 | 65 3b 0d 7d 0d 0d 0d 0d |-> mValu|e;.}....|
|00001500| 76 6f 69 64 2a 26 20 48 | 61 73 68 74 61 62 6c 65 |void*& H|ashtable|
|00001510| 3a 3a 6f 70 65 72 61 74 | 6f 72 5b 5d 20 28 20 63 |::operat|or[] ( c|
|00001520| 6f 6e 73 74 20 76 6f 69 | 64 2a 20 69 6e 4b 65 79 |onst voi|d* inKey|
|00001530| 20 29 20 7b 0d 09 4b 45 | 6e 74 72 79 2a 09 65 6e | ) {..KE|ntry*.en|
|00001540| 74 72 79 20 3d 20 66 65 | 74 63 68 45 6e 74 72 79 |try = fe|tchEntry|
|00001550| 28 20 28 6c 6f 6e 67 29 | 20 69 6e 4b 65 79 2c 20 |( (long)| inKey, |
|00001560| 4e 55 4c 4c 20 29 3b 0d | 09 0d 09 69 66 20 28 20 |NULL );.|...if ( |
|00001570| 21 20 65 6e 74 72 79 20 | 29 20 7b 0d 09 09 50 75 |! entry |) {...Pu|
|00001580| 74 28 20 28 6c 6f 6e 67 | 29 20 69 6e 4b 65 79 2c |t( (long|) inKey,|
|00001590| 20 30 20 29 3b 0d 09 09 | 65 6e 74 72 79 20 3d 20 | 0 );...|entry = |
|000015a0| 66 65 74 63 68 45 6e 74 | 72 79 28 20 28 6c 6f 6e |fetchEnt|ry( (lon|
|000015b0| 67 29 20 69 6e 4b 65 79 | 2c 20 4e 55 4c 4c 20 29 |g) inKey|, NULL )|
|000015c0| 3b 0d 09 7d 0d 09 0d 09 | 72 65 74 75 72 6e 20 65 |;..}....|return e|
|000015d0| 6e 74 72 79 20 2d 3e 20 | 6d 56 61 6c 75 65 3b 0d |ntry -> |mValue;.|
|000015e0| 7d 0d 0d 0d 0d 0d 0d 0d | 76 6f 69 64 20 48 61 73 |}.......|void Has|
|000015f0| 68 74 61 62 6c 65 3a 3a | 52 61 6e 6b 28 20 58 50 |htable::|Rank( XP|
|00001600| 74 72 4c 69 73 74 26 20 | 6f 75 74 4b 65 79 73 2c |trList& |outKeys,|
|00001610| 20 43 6f 6d 70 46 75 6e | 63 74 69 6f 6e 54 20 69 | CompFun|ctionT i|
|00001620| 6e 43 6f 6d 70 46 63 6e | 2c 20 6c 6f 6e 67 20 69 |nCompFcn|, long i|
|00001630| 6e 4e 75 6d 54 6f 52 61 | 6e 6b 20 29 20 7b 0d 09 |nNumToRa|nk ) {..|
|00001640| 6c 6f 6e 67 20 69 2c 20 | 6e 20 3d 20 4e 75 6d 45 |long i, |n = NumE|
|00001650| 6e 74 72 69 65 73 28 29 | 3b 0d 09 4b 45 6e 74 72 |ntries()|;..KEntr|
|00001660| 79 2a 2a 20 65 6e 74 72 | 79 50 20 3d 20 6d 54 61 |y** entr|yP = mTa|
|00001670| 62 6c 65 2c 20 2a 65 6e | 74 72 79 3b 0d 09 63 6f |ble, *en|try;..co|
|00001680| 6e 73 74 20 76 6f 69 64 | 20 2a 2a 70 2c 20 2a 2a |nst void| **p, **|
|00001690| 74 65 6d 70 20 3d 20 6e | 65 77 20 76 6f 69 64 2a |temp = n|ew void*|
|000016a0| 5b 20 32 20 2a 20 6e 20 | 5d 3b 0d 09 0d 09 69 66 |[ 2 * n |];....if|
|000016b0| 20 28 20 69 6e 4e 75 6d | 54 6f 52 61 6e 6b 20 3c | ( inNum|ToRank <|
|000016c0| 20 30 20 29 0d 09 09 69 | 6e 4e 75 6d 54 6f 52 61 | 0 )...i|nNumToRa|
|000016d0| 6e 6b 20 3d 20 6e 3b 0d | 09 69 6e 4e 75 6d 54 6f |nk = n;.|.inNumTo|
|000016e0| 52 61 6e 6b 20 3d 20 5f | 4d 49 4e 28 20 69 6e 4e |Rank = _|MIN( inN|
|000016f0| 75 6d 54 6f 52 61 6e 6b | 2c 20 6e 20 29 3b 0d 0d |umToRank|, n );..|
|00001700| 09 2f 2f 20 54 6f 20 72 | 61 6e 6b 2c 20 77 65 20 |.// To r|ank, we |
|00001710| 6d 75 73 74 20 73 6f 72 | 74 20 62 79 20 76 61 6c |must sor|t by val|
|00001720| 75 65 2c 20 77 69 74 68 | 20 61 20 74 61 67 20 6f |ue, with| a tag o|
|00001730| 6e 20 65 61 63 68 20 65 | 6c 65 6d 65 6e 74 20 6f |n each e|lement o|
|00001740| 66 20 69 74 73 20 6b 65 | 79 0d 09 70 20 3d 20 74 |f its ke|y..p = t|
|00001750| 65 6d 70 3b 0d 09 66 6f | 72 20 28 20 69 20 3d 20 |emp;..fo|r ( i = |
|00001760| 30 3b 20 69 20 3c 20 6d | 54 61 62 6c 65 53 69 7a |0; i < m|TableSiz|
|00001770| 65 3b 20 69 2b 2b 20 29 | 20 7b 0d 09 09 65 6e 74 |e; i++ )| {...ent|
|00001780| 72 79 20 3d 20 2a 65 6e | 74 72 79 50 3b 0d 09 09 |ry = *en|tryP;...|
|00001790| 77 68 69 6c 65 20 28 20 | 65 6e 74 72 79 20 29 20 |while ( |entry ) |
|000017a0| 7b 0d 09 09 09 2a 70 20 | 3d 20 65 6e 74 72 79 20 |{....*p |= entry |
|000017b0| 2d 3e 20 6d 56 61 6c 75 | 65 3b 20 20 0d 09 09 09 |-> mValu|e; ....|
|000017c0| 70 2b 2b 3b 20 0d 09 09 | 09 2a 70 20 3d 20 28 20 |p++; ...|.*p = ( |
|000017d0| 65 6e 74 72 79 20 2d 3e | 20 6d 48 61 73 68 61 62 |entry ->| mHashab|
|000017e0| 6c 65 20 29 20 3f 20 65 | 6e 74 72 79 20 2d 3e 20 |le ) ? e|ntry -> |
|000017f0| 6d 48 61 73 68 61 62 6c | 65 20 3a 20 28 63 6f 6e |mHashabl|e : (con|
|00001800| 73 74 20 76 6f 69 64 2a | 29 20 65 6e 74 72 79 20 |st void*|) entry |
|00001810| 2d 3e 20 6d 4b 65 79 3b | 0d 09 09 09 70 2b 2b 3b |-> mKey;|....p++;|
|00001820| 0d 09 09 09 65 6e 74 72 | 79 20 3d 20 65 6e 74 72 |....entr|y = entr|
|00001830| 79 20 2d 3e 20 6d 4e 65 | 78 74 3b 0d 09 09 7d 0d |y -> mNe|xt;...}.|
|00001840| 0d 09 09 65 6e 74 72 79 | 50 2b 2b 3b 0d 09 7d 0d |...entry|P++;..}.|
|00001850| 0d 09 2f 2f 20 44 65 66 | 61 75 6c 74 20 74 6f 20 |..// Def|ault to |
|00001860| 6c 6f 6e 67 2d 6c 6f 6e | 67 20 72 61 6e 6b 69 6e |long-lon|g rankin|
|00001870| 67 0d 09 69 66 20 28 20 | 21 20 69 6e 43 6f 6d 70 |g..if ( |! inComp|
|00001880| 46 63 6e 20 29 0d 09 09 | 69 6e 43 6f 6d 70 46 63 |Fcn )...|inCompFc|
|00001890| 6e 20 3d 20 73 4c 6f 6e | 67 43 6f 6d 70 61 72 69 |n = sLon|gCompari|
|000018a0| 74 6f 72 3b 0d 09 0d 09 | 2f 2f 20 53 6f 72 74 20 |tor;....|// Sort |
|000018b0| 74 68 65 20 66 6c 6f 61 | 74 73 0d 09 71 73 6f 72 |the floa|ts..qsor|
|000018c0| 74 28 20 74 65 6d 70 2c | 20 6e 2c 20 38 2c 20 69 |t( temp,| n, 8, i|
|000018d0| 6e 43 6f 6d 70 46 63 6e | 20 29 3b 0d 09 0d 09 2f |nCompFcn| );..../|
|000018e0| 2f 20 50 75 74 20 74 68 | 65 20 73 6f 72 74 65 64 |/ Put th|e sorted|
|000018f0| 20 72 65 73 75 6c 74 73 | 20 69 6e 20 74 68 65 20 | results| in the |
|00001900| 64 65 73 74 69 6e 61 74 | 69 6f 6e 0d 09 6f 75 74 |destinat|ion..out|
|00001910| 4b 65 79 73 2e 52 65 6d | 6f 76 65 41 6c 6c 28 29 |Keys.Rem|oveAll()|
|00001920| 3b 0d 09 70 20 3d 20 74 | 65 6d 70 20 2b 20 31 3b |;..p = t|emp + 1;|
|00001930| 0d 09 66 6f 72 20 28 20 | 69 20 3d 20 30 3b 20 69 |..for ( |i = 0; i|
|00001940| 20 3c 20 6e 3b 20 69 2b | 2b 20 29 20 7b 0d 09 09 | < n; i+|+ ) {...|
|00001950| 6f 75 74 4b 65 79 73 2e | 41 64 64 28 20 2a 70 20 |outKeys.|Add( *p |
|00001960| 29 3b 0d 09 09 70 20 2b | 3d 20 32 3b 0d 09 7d 0d |);...p +|= 2;..}.|
|00001970| 09 0d 09 2f 2f 20 43 6c | 65 61 6e 75 70 0d 09 64 |...// Cl|eanup..d|
|00001980| 65 6c 65 74 65 20 5b 5d | 74 65 6d 70 3b 0d 7d 0d |elete []|temp;.}.|
|00001990| 0d 0d 0d 0d 0d 69 6e 74 | 20 48 61 73 68 74 61 62 |.....int| Hashtab|
|000019a0| 6c 65 3a 3a 73 4c 6f 6e | 67 43 6f 6d 70 61 72 69 |le::sLon|gCompari|
|000019b0| 74 6f 72 28 20 63 6f 6e | 73 74 20 76 6f 69 64 2a |tor( con|st void*|
|000019c0| 20 69 6e 41 2c 20 63 6f | 6e 73 74 20 76 6f 69 64 | inA, co|nst void|
|000019d0| 2a 20 69 6e 42 20 29 20 | 7b 0d 09 72 65 74 75 72 |* inB ) |{..retur|
|000019e0| 6e 20 28 28 6c 6f 6e 67 | 29 20 69 6e 42 20 2d 20 |n ((long|) inB - |
|000019f0| 28 6c 6f 6e 67 29 20 69 | 6e 41 29 3b 0d 7d 0d 00 |(long) i|nA);.}..|
|00001a00| 00 00 01 00 00 00 01 54 | 00 00 00 54 00 00 00 46 |.......T|...T...F|
|00001a10| 24 c0 da c6 e9 9b 00 b9 | 97 75 65 ad 7b a4 8c 00 |$.......|.ue.{...|
|00001a20| 71 63 5a 32 11 0b 79 0a | 00 f2 9e aa b2 72 8e f8 |qcZ2..y.|.....r..|
|00001a30| 0d 48 61 73 68 74 61 62 | 6c 65 2e 63 70 70 42 30 |.Hashtab|le.cppB0|
|00001a40| 31 42 43 31 63 65 72 61 | 74 6f 72 2e 65 78 65 33 |1BC1cera|tor.exe3|
|00001a50| 02 ab 54 45 58 54 43 57 | 49 45 01 00 ff ff ff ff |..TEXTCW|IE......|
|00001a60| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00001a70| 00 00 b2 80 b5 31 00 00 | 13 5b 00 00 01 9a 1b 22 |.....1..|.[....."|
|00001a80| 8c 00 ea b0 45 89 dc 75 | 09 0c 00 ac aa d6 1d 21 |....E..u|.......!|
|00001a90| 16 c4 dd 03 01 b1 8a 4e | b0 ca 90 ad 5d 40 05 d3 |.......N|....]@..|
|00001aa0| d1 bd d2 62 20 1b 5c 6f | 01 00 63 fd 2c 64 8a d5 |...b .\o|..c.,d..|
|00001ab0| fb 5f 00 16 fe 9b 40 c6 | f3 1c 9d 00 a0 bf fa 42 |._....@.|.......B|
|00001ac0| 4b 88 b2 4a 00 1e eb d5 | de 0b f5 c6 51 ea 90 00 |K..J....|....Q...|
|00001ad0| 94 57 af 79 39 8c 96 3c | 00 71 b9 85 0e 17 e9 76 |.W.y9..<|.q.....v|
|00001ae0| 50 00 6a a8 ac 9a ff f0 | 31 1d e4 63 05 55 86 87 |P.j.....|1..c.U..|
|00001af0| 5e a2 20 d8 95 5d 6e 3c | 6f 29 83 04 93 94 ab 15 |^. ..]n<|o)......|
|00001b00| 00 00 00 48 00 09 4d 6f | 6e 61 63 6f 00 00 00 00 |...H..Mo|naco....|
|00001b10| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00001b20| 00 00 00 00 00 00 00 03 | 00 04 00 7a 00 08 02 45 |........|...z...E|
|00001b30| 02 af 00 7a 00 08 02 45 | 02 af b3 b1 57 e2 00 00 |...z...E|....W...|
|00001b40| 02 da 00 00 02 da 00 00 | 00 18 01 00 00 00 00 04 |........|........|
|00001b50| 00 01 00 01 00 00 01 00 | 00 00 01 54 00 00 00 54 |........|...T...T|
|00001b60| 00 00 00 46 04 f9 79 34 | 16 68 00 00 00 1c 00 46 |...F..y4|.h.....F|
|00001b70| 00 01 4d 50 53 52 00 00 | 00 12 4d 57 42 42 00 00 |..MPSR..|..MWBB..|
|00001b80| 00 1e 03 ed ff ff 00 00 | 00 00 00 00 00 00 03 f0 |........|........|
|00001b90| ff ff 00 00 00 4c 00 00 | 00 00 00 00 00 00 00 00 |.....L..|........|
|00001ba0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00001bb0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00001bc0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00001bd0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00001be0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00001bf0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
+--------+-------------------------+-------------------------+--------+--------+